package utility

import (
	"gin_demo/internal/consts"
	"log"
	"os"

	"github.com/gin-gonic/gin"
)

func Upload(ctx *gin.Context) (string, error) {
	file, err := ctx.FormFile("file")
	dir, _ := os.Getwd()
	fileSaveDir := dir + consts.App.Configuration.Server.Upload
	// os.Stat()函数返回的错误值进行判断：如果返回的错误为nil，说明文件或文件夹存在
	// 如果返回的错误类型使用os.IsNotExist()判断为true，说明文件或文件夹不存在
	_, err = os.Stat(fileSaveDir)
	filePath := fileSaveDir + "/" + file.Filename
	if err != nil || os.IsNotExist(err) {
		_ = os.MkdirAll(fileSaveDir, 0777)
	}
	err = ctx.SaveUploadedFile(file, filePath)
	if err != nil {
		log.Fatalln(err)
		consts.App.Log.Error(err.Error())
		return "", err
	} else {
		info, err := UploadFile(file.Filename, filePath, "mymusic", file.Header.Get("Content-Type"))
		if err != nil {
			return "", err
		} else {
			// fmt.Printf("info: %v\n", info)
			_ = os.Remove(filePath)
			return info, nil
		}
	}
}
